import pandas as pd
import numpy as np
from kulfan_to_coord import CST_shape


def func(read_file=r"paraVAR.csv", output_file = r"airfoil.dat", N=301):
    '''
        功能：读入一组参数化变量，输出对应的翼型坐标（仅对一个翼型操作）。
        输入：paraVAR.csv文件，文件内容是一行参数化变量，如果是10个变量，就是10个数字；
        输出：airfoil.dat文件，翼型点的坐标，输出顺序是：从后缘开始顺时针一周（后缘，下表面，前缘，上表面，后缘）
    '''

    # 读取csv文件（设计变量），不带表头，索引是文件名
    # 假设一共n个设计变量，前n个为下表面设计变量，后n个为上表面设计变量
    df = pd.read_csv(read_file, header=None, index_col=0)

    # 设计变量个数
    var_nums = df.shape[1]

    # 设计变量
    var = df.to_numpy()[0].flatten()
    print(var)

    # 上表面设计变量
    wl = var[0:int(var_nums / 2)]
    # 下表面设计变量
    wu = var[int(var_nums / 2)::]
    print("wl:", wl)
    print("wu:", wu)

    # CST参数化方法生成坐标，其中N为生成翼型的坐标个数，x为横坐标分布
    airfoil_CST = CST_shape(wl=wl,
                            wu=wu,
                            dz=0,
                            N=N)
    coordinates = airfoil_CST.airfoil_coor()
    coordinates = np.asarray(coordinates).T

    pd.DataFrame(coordinates[::-1]).to_csv(output_file,
                                           header=None,
                                           index=None)
